package com.niit.class_3.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class DBHelper {

    //获取数据库链接
    public static Connection getConnection(){
        Connection conn = null ;
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            String url = "jdbc:mysql://localhost:3306/project?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false";
            //conn = DriverManager.getConnection(url, "root", "f33b9484156cfa55");
            conn = DriverManager.getConnection(url, "root", "123456");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return conn ;
    }

    //查询的公共方法  Object... 可变长度的参数
    public static ResultSet executeQuery(String sql , Object...obj){
        ResultSet rs = null ;
        Connection conn = getConnection(); //同一个类中，可以直接使用方法名来调用

        try {
            //将sql语句发送给数据库，让数据进行预编译处理 加快执行的速度
            PreparedStatement pre = conn.prepareStatement(sql);
            //传参
            for (int i = 0; i < obj.length; i++) {
                pre.setObject(i+1, obj[i]);
            }
            //执行SQL语句
            rs = pre.executeQuery();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return rs ;
    }

    //增删改通用方法
    public static int executeUpdate(String sql , Object...obj){
        int count = -1 ;
        Connection conn = getConnection(); //同一个类中，可以直接使用方法名来调用
        try {
            //将sql语句发送给数据库，让数据进行预编译处理 加快执行的速度
            PreparedStatement pre = conn.prepareStatement(sql);
            //传参
            for (int i = 0; i < obj.length; i++) {
                pre.setObject(i+1, obj[i]);
            }
            //执行SQL语句
            count = pre.executeUpdate();
            //关闭链接
            pre.close();
            conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return count ;
    }
}
